<?php

class jwCustomTable extends BasejwCustomTable
{
    protected $forceUpdate = false;
    
    public function getValuesAsJSON()
    {
        $c = new Criteria();
        $c->addAscendingOrderByColumn( jwCustomTableValuePeer::ROW );
        $c->addAscendingOrderByColumn( jwCustomTableValuePeer::COL );
        
        $values = $this->getjwCustomTableValues( $c );
        
        $retVal = array();
        
        foreach( $values as $jwTableValue )
        {
            if ( !isset( $retVal[ $jwTableValue->getRow() ] ) )
                $retVal[ $jwTableValue->getRow() ] = array();
            
            $retVal[ $jwTableValue->getRow() ][ $jwTableValue->getCol() ] = $jwTableValue->getValue();
        }
        
        return json_encode( $retVal );
    }
    
    public function forceUpdate()
    {
        $this->forceUpdate = true;
    }
    
	protected function doSave(PropelPDO $con)
	{
        if ( !$this->isNew() && $this->forceUpdate && $this->colljwCustomTableValues )
        {
            $rows = array();
            $cols = array();
            
            foreach( $this->colljwCustomTableValues as $jwTableValue )
            {
                $rows[ $jwTableValue->getRow() ] = $jwTableValue->getRow();
                $cols[ $jwTableValue->getCol() ] = $jwTableValue->getCol();    
            }
            
            $c = new Criteria();
            $c->add( jwCustomTableValuePeer::JW_TABLE_ID, $this->getId() );
            $cOr1 = $c->getNewCriterion( jwCustomTableValuePeer::COL, $cols, Criteria::NOT_IN );
            $cOr2 = $c->getNewCriterion( jwCustomTableValuePeer::ROW, $rows, Criteria::NOT_IN );
            $cOr1->addOr( $cOr2 );
            $c->add( $cOr1 );
            jwCustomTableValuePeer::doDelete( $c );
            unset( $c );
            
        }
        parent::doSave( $con );
	} 
}
